<?php

/*
 * Ciudad DAL.
 * @Autor: Inicial.cl.
 */

class CiudadDAL {

    //METODO PARA GRABAR CIUDAD.
    public static function grabar($oCiudad) {
        try {
            $arr = array(
                "{#NOMBRE}" => $oCiudad->getNombre(),
                "{#IDREGION}" => $oCiudad->getIdRegion()
            );
            $query = Util::getQuery($arr, CiudadSQL::$GRABAR_CIUDAD);
            $arrDatos = Bd::exec($query);

            $id = Bd::$IDENTITY; //Retorno id insertado
            return $id;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA EDITAR CIUDAD.
    public static function editar($oCiudad) {
        try {
            $arr = array(
                "{#ID}" => $oCiudad->getId(),
                "{#NOMBRE}" => $oCiudad->getNombre(),
                "{#IDREGION}" => $oCiudad->getIdRegion()
            );
            $query = Util::getQuery($arr, CiudadSQL::$EDITAR_CIUDAD);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR CIUDAD.
    public static function listar() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, CiudadSQL::$LISTAR_CIUDAD);
            $arrDatos = Bd::exec($query);
            $arrCiudad = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oCiudad = new Ciudad();

                    $oCiudad->setId($row["id"]);
                    $oCiudad->setNombre($row["nombre"]);
                    $oCiudad->setIdRegion($row["idRegion"]);

                    $arrCiudad[] = $oCiudad;
                }
            }

            return $arrCiudad;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }
    
    //METODO PARA LISTAR CIUDAD POR REGION.
    public static function listarPorRegion($idRegion) {
        try {
            $arr = array(
                "{#IDREGION}" => $idRegion
            );
            $query = Util::getQuery($arr, CiudadSQL::$LISTAR_CIUDAD_POR_REGION);
            $arrDatos = Bd::exec($query);
            $arrCiudad = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oCiudad = new Ciudad();

                    $oCiudad->setId($row["id"]);
                    $oCiudad->setNombre($row["nombre"]);
                    $oCiudad->setIdRegion($row["idRegion"]);

                    $arrCiudad[] = $oCiudad;
                }
            }

            return $arrCiudad;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA OBTENER POR ID CIUDAD.
    public static function obtenerPorId($id) {
        try {
            $arr = array(
                "{#ID}" => $id
            );
            $query = Util::getQuery($arr, CiudadSQL::$OBTENER_CIUDAD_POR_ID);
            $arrDatos = Bd::exec($query);

            if (count($arrDatos) > 0) {
                $oCiudad = new Ciudad();

                foreach ($arrDatos as $row) {
                    $oCiudad->setId($row["id"]);
                    $oCiudad->setNombre($row["nombre"]);
                    $oCiudad->setIdRegion($row["idRegion"]);
                }
                return $oCiudad;
            }
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA ELIMINAR CIUDAD.
    public static function eliminar($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, CiudadSQL::$ELIMINAR_CIUDAD);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

}

?>